﻿///@author Rafał Hazan
///@email  rafal.hazan@gmail.com
#ifndef __BETTER_FULL_CROSSOVER__
#define __BETTER_FULL_CROSSOVER__

#include "CrossoverOperator.h"
#include "EvolutionaryAlgorithm.h"
#include "CliqueFitnessFunction.h"

/// Implementacja operatora krzyzowania.
/// Mniejsza jest wlaczana do wiekszej. Wynik także jest kliką.
class BetterFullCrossover : public CrossoverOperator
{
public:
	virtual ~BetterFullCrossover(void) {}
	virtual EvolutionaryAlgorithm::population_type cross(Genotype & gen1, Genotype & gen2);

private:
	/// Wlacza gen2 do gen1 (gen2 jest slabszy). Wynik jest umieszczany w dziecku.
	void updateChild(Genotype & child, Genotype & gen1, Genotype & gen2);
};

#endif